
package Modelo;

/**
 *
 * @author Ddj Murillo
 */

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.JOptionPane;

public class OrdenCompraModelo {

        ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;


//linkedlist clase de java para generar listas
//preparedstatement permite prepara el estado recibir la informacion de la base de datos
//rsultset el resultado
 public LinkedList consultaOrdenCompraTabla(String consulta,int tipo)throws SQLException{
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

     //parametros consulta clientes, tipo: 1.Cedula 2.Nombre 3.Establecimiento
	LinkedList listaClie=new LinkedList();
	PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            if (consulta.equals(""))
  		pstmt=con.prepareStatement("select * from Pedido");
            else
                if (tipo==1)
                    pstmt=con.prepareStatement("select * from ordendecompra where consecutivo like '%"+ consulta + "%'");//probando

  		rs=pstmt.executeQuery();
  		while(rs.next()){
  			listaClie.add(ordenCompra.load(rs));
  		}

  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}

	return listaClie;
 }

/**
 * Inserto nuevo pedido
 * @param pedido
 * @throws SQLException
 */
 public void setNuevoPedido(ordenCompra orden) throws SQLException {// insertar datos a la base de datos
       if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("insert into pedido values(?,?,?,?,?)");
                pstmt.setString(1,  orden.getConsecutivo());
                pstmt.setDate(2, orden.getFecha());
                pstmt.setBoolean(3,  orden.isEstado());
		pstmt.setString(4,  orden.getProveedores_nit());
                pstmt.setString(5,  orden.getSucursal_codigo());
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 /**
  *actualizar donde consulta cedula o codigo y dato es el valor a cambiar
  *
  */
  public void actualizarPedido(ordenCompra orden,String consulta) throws SQLException {// insertar datos a la base de datos
        if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        int estado=0;
        if(orden.isEstado())
            estado=1;

        PreparedStatement pstmt=    null;
        try{

                pstmt=con.prepareStatement("update pedido set "
                        + "consecutivo='" + orden.getConsecutivo() + "',"
                        + "fecha='" + orden.getFecha() + "',"
                        + "estado='" + estado + "',"
                        //+ "estado='" + pedido.isEstado() + "',"
                        + "Proveedores_nit='" + orden.getProveedores_nit() + "', "
                        + "Sucursal_codigo='" + orden.getSucursal_codigo() + "'"
                        + " where consecutivo='" + consulta +"'");
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

  public ordenCompra consultaOrdenCompra(String consulta) throws SQLException{
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      ordenCompra OrdenC=new ordenCompra();
      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from ordencompra where consecutivo='"+ consulta + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                OrdenC.setConsecutivo(rs.getString(1));
                OrdenC.setFecha(rs.getDate(2));
                OrdenC.setEstado(rs.getBoolean(3));
                OrdenC.setProveedores_nit(rs.getString(4));
                OrdenC.setSucursal_codigo(rs.getString(5));
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return OrdenC;
  }

   /**
  * Consultar cedula o codigo
  * @param nickname
  * @throws SQLException
  */
  public ordenCompra getOrdenC(String consecutivo) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        ordenCompra ordenC=new ordenCompra();
        PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from ordendecompra where consecutivo='"+ consecutivo + "'");//probando
            rs=pstmt.executeQuery();

            while(rs.next()){
                ordenC.setConsecutivo(rs.getString(1));
                ordenC.setFecha(rs.getDate(2));
                ordenC.setEstado(rs.getBoolean(3));
                ordenC.setProveedores_nit(rs.getString(4));
                ordenC.setSucursal_codigo(rs.getString(5));
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return ordenC;
  }

  /**
   * Obtiene el ultimo consecutivo o maximo consecutivo
   */
  public int getConsecutivo() throws SQLException{
     if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

       int consecutivo=0;
       PreparedStatement pstmt=null;
       ResultSet rs=null;
       try{
            consecutivo=10000000;
            //calculo el maximo consecutivo
            pstmt=con.prepareStatement("SELECT max(cast(consecutivo As SIGNED)) as consecutivo FROM ordendecompra");
            rs=pstmt.executeQuery();

            while(rs.next()){
                if(rs.getInt(1)!=0)
                    consecutivo=rs.getInt(1);
            }
        }finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return consecutivo;
  }
}
